{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "12f2c6f6",
   "metadata": {},
   "source": [
    "# FIR滤波器结构：第Ⅲ类线性相位型\n",
    "\n",
    "画出单位脉冲响应为 h(n)=0.5,-0.5,1,-1,0,1,-1,0.5,-0.5 的第III型线性相位滤波器的幅度函数和相位函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "04f5ce44",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#library\n",
    "import numpy as np;from math import *\n",
    "import matplotlib.pyplot as plt;from matplotlib import ticker\n",
    "\n",
    "#单位脉冲响应\n",
    "h = np.array([0.5,-0.5,1,-1,0,1,-1,0.5,-0.5]) #N为奇数，奇对称\n",
    "N = len(h);L = int((N-1)/2)\n",
    "\n",
    "#幅度函数和相位函数\n",
    "c = 2*h[L::-1] #c(n)各值\n",
    "n = np.arange(L+1);w = np.arange(501)*2*pi/500\n",
    "c = c.reshape(-1,1);w = w.reshape(-1,1) #将c(n)和w(n)转为一列\n",
    "Hw = np.dot(np.sin(w*n),c);Pw = -w*L+pi/2 ##幅度函数和相位函数\n",
    "\n",
    "#绘制单位响应\n",
    "fig,ax = plt.subplots();ax.stem(h,basefmt=\"\")\n",
    "ax.set_title('第III类线性相位的h(n)');ax.set_xlabel('n')\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False #用来显示负号\n",
    "fig.savefig('./fir_linear_phase3_1.png',dpi=500)\n",
    "\n",
    "#绘制幅度函数和相位函数\n",
    "fig,axs = plt.subplots(2,1,constrained_layout=True)\n",
    "axs[0].plot(w/pi,Hw);axs[1].plot(w/pi,Pw/pi)\n",
    "axs[0].set_title('第III类线性相位的幅度函数');axs[0].grid()\n",
    "axs[0].set_xlabel('frequency');axs[0].set_ylabel(r'$ H( \\omega )$')\n",
    "formatter = ticker.FormatStrFormatter('%1.2f$ \\pi$')\n",
    "axs[0].xaxis.set_major_formatter(formatter)\n",
    "axs[1].set_title('第III类线性相位的相位函数');axs[1].grid()\n",
    "axs[1].set_xlabel('frequency');axs[1].set_ylabel(r'$ \\theta ( \\omega )$')\n",
    "axs[1].xaxis.set_major_formatter(formatter)\n",
    "axs[1].yaxis.set_major_formatter(formatter)\n",
    "plt.show();fig.savefig('./fir_linear_phase3_2.png',dpi=500)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ea5360a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
